/**
 * 给定两个排列A和B，
 * 对每一对(i, j)满足如下条件
 * 1. i < j
 * 2. P[Ai] < P[Aj]
 * 则得分为  j - i
 * 求总得分。其中Px是x在B数组中的位置
 * 做一个二元组的数组: (i, P[Ai])，记作 (x, y)
 * 则就是一个二维偏序的问题变形
 * 对每一个点i，计算 c * xi - SIGMA{xj, j是位于i左下的所有点}
 * 其中c是左下点的数量
 * 用两个树状数组b1和b2
 * 对每一个点(x, y):
 *    在b1中查询[1, y)的和，该和表示一共有多少个点位于左下，记作c
 *    在b2中查询[1, y)的和，该和表示左下点x坐标之和, 记作s
 *    然后将 c * x - s 累加进去即可
 *    然后将 b1[y] 加 1， b2[y] 加 x 即可
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;


using llt = long long;
using Real = double;
using vi = vector<int>;

struct FenwickTree{ // 树状数组

using value_type = long long int;
using vec_type = vector<value_type>;

int n;
vec_type c;

FenwickTree() = default;

static int lowbit(int x){return x & -x;}

void init(int nn){this->c.assign((this->n=nn) + 1, 0);}

void modify(int pos, value_type delta){
    for(int i=pos;i<=this->n;i+=lowbit(i)) this->c[i] += delta;
}

value_type query(int pos)const{
    value_type ans = 0;
    for(int i=pos;i;i-=lowbit(i)) ans += this->c[i];
    return ans;
}

value_type query(int s, int e)const{return this->query(e) - this->query(s - 1);}

}Bt1, Bt2;

using pii = pair<int, int>;

int N;
vi A, B;

void input(vi & v, int n){
    v.assign(n, {});
    for(auto & i : v) cin >> i;
}

llt proc(){
    vi pos(N + 1, {});
    for(int i=0;i<N;++i) pos[B[i]] = i;

    vector<pair<int, int>> vec(N);
    for(int i=0;i<N;++i){
        vec[i] = {i + 1, pos[A[i]] + 1};
    }
    // sort(vec.begin(), vec.end(), [](pii a, pii b){return a.second < b.second;});

    llt ans = 0;
    Bt1.init(N); Bt2.init(N);
    for(int i=0;i<N;++i){
        auto k = vec[i].first;
        auto v = vec[i].second;

        auto c = Bt1.query(v);
        Bt1.modify(v, 1);

        auto s = Bt2.query(v);
        Bt2.modify(v, k);

        ans += c * k - s;
    }

    return ans;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    cin >> N;
    input(A, N); input(B, N);
    cout << proc() << endl;
    return 0;
}